#pragma once 
#include"log.hpp"

namespace bit
{
    //获取指定名称的日志器
    static Logger::ptr getLogger(const std::string logName)
    {
        return LogAdministrator::getInstance().getLogger(logName);
    }

    //对日志器的相应接口进行封装（代理模式）：
    #define debug(fmt, ...) debug(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define info(fmt, ...) info(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define warn(fmt, ...) warn(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define error(fmt, ...) error(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define fatal(fmt, ...) fatal(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    
    //使用下面这些接口就是用的默认的日志器：
    #define DEBUG(fmt, ...) do{bit::LogAdministrator::getInstance().rootLogger()->debug(fmt, ##__VA_ARGS__);}while(0)
    #define INFO(fmt, ...) do{bit::LogAdministrator::getInstance().rootLogger()->info(fmt, ##__VA_ARGS__);}while(0)
    #define WARN(fmt, ...) do{bit::LogAdministrator::getInstance().rootLogger()->warn(fmt, ##__VA_ARGS__);}while(0)
    #define ERROR(fmt, ...) do{bit::LogAdministrator::getInstance().rootLogger()->error(fmt, ##__VA_ARGS__);}while(0)
    #define FATAL(fmt, ...) do{bit::LogAdministrator::getInstance().rootLogger()->fatal(fmt, ##__VA_ARGS__);}while(0)
}